function myAjaxPromise(option) {
  return new Promise((resolve, reject) => {
    // 结构传入的配置对象
    // 如果调用函数的人不传method则,默认使用get请求
    let { url, method = 'get', data, success, fail } = option

    //判断如果不传url,则不需要发送请求
    if (!url) return

    // 创建xhr实例
    const xhr = new XMLHttpRequest()

    // 如果是get请求,则需要在调用open函数之前先把data的数据拼接成 `键=值&键=值`的形式
    //判断是否传入了data
    let str = null
    if (data) {
      // 如果传入了data,则将对象转成键=值的字符串
      let arr = []
      for (key in data) {
        arr.push(key + '=' + data[key])
      }
      str = arr.join('&')
    }

    // 判断,如果是get请求,才将创建好的字符串拼接在url后面
    if (method === 'get' && data) {
      url += '?' + str
      str = null
    }
    // 调用open方法
    xhr.open(method, url)

    // 只有post请求,需要设置请求头
    if (method === 'post') {
      xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')
    }

    // 设置请求主体并发送请求
    xhr.send(str)

    // 接收响应

    xhr.onreadystatechange = function () {
      if (xhr.readyState === 4) {
        if (xhr.status === 200) {
          // 成功
          resolve(xhr.responseText)
        } else {
          reject()
        }
      }
    }
  })
}
